<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>

<button>点击</button>
<script>
    // this 指向问题  一般情况下this的最终指向的是那个调用它的对象

    // 1.全局作用域或则普通函数中this指向全局对象window (注意定时器里面this是指向window)
    console.log(this);      // window

    function fn() {
        console.log(this);  // window
    }

    window.fn();

    window.setTimeout(function () {
        console.log(this);  // window

        innerFunc();

        function innerFunc() {
            console.log('innerFunc: ')
            console.log(this)       // window ?
        }
    }, 1000);


    // 2.方法调用中, 谁调用this, 就指向谁
    var obj = {
        sayHi: function () {
            console.log(this)   // this 指向的是 obj 这个对象
        }
    }
    // 调用 obj对象中 sayHi() 方法
    obj.sayHi();

    var btn = document.querySelector('button');
    btn.onclick = function () {
        console.log(this);      // this 指向的是 btn 这个按钮对象
    }

    // 3.构造函数中this指向构造函数的实例
    function Fun() {
        console.log(this)
    }

    var fun = new Fun();    // this 指向的是 fun 实例对象

</script>
<body>

</body>
</html>
